package com.atguigu.gmall.product.controller;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.entity.BaseAttrInfo;
import com.atguigu.gmall.product.entity.BaseAttrValue;
import com.atguigu.gmall.product.service.BaseAttrInfoService;
import com.atguigu.gmall.product.service.BaseAttrValueService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author lfy
 * @Description 属性
 * @create 2022-10-31 10:12
 */
@Slf4j
@RequestMapping("/admin/product")
@RestController
public class AttrController {


    @Autowired
    BaseAttrInfoService baseAttrInfoService;

    @Autowired
    BaseAttrValueService baseAttrValueService;


    /**
     * 查询某个平台属性的所有属性值
     * @param attrId
     * @return
     */
    @GetMapping("/getAttrValueList/{attrId}")
    public Result getAttrValueList(@PathVariable("attrId")Long attrId){

        List<BaseAttrValue> values = baseAttrValueService.getAttrValueList(attrId);
        return Result.ok(values);
    }


    /**
     * 保存属性/修改属性
     * @RequestBody 可以将接到的json数据转为指定的Bean对象
     * @return
     */
    @PostMapping("/saveAttrInfo")
    public Result saveAttrInfo(@RequestBody BaseAttrInfo baseAttrInfo){
        log.info("保存/修改属性： {}",baseAttrInfo);
        baseAttrInfoService.saveAttrInfo(baseAttrInfo);
        return Result.ok();
    }


    /**
     * 查询分类下的平台属性
     * 请求：
     *   请求首行：
     *      GET：请求方式     [@XxxMapping]
     *      /haha： 请求路径  [] @PathVariable 路径中的变化部分
     *      ?k=v：查询字符串（get的参数都在这里）   @RequestParam 取出请求参数
     *   请求头：  @RequestHeader
     *   请求体：
     *     Post: 表单提交：k=v&k=v  @RequestParam
     *     Post: json             @RequestBody：请求体的数据
     *     文件（多部件）： 流        @RequestPart： 取出某个部件
     *          inpuy type="text/file"
     * Go、C++
     *
     *
     * @return
     */
    @GetMapping("/attrInfoList/{c1id}/{c2id}/{c3id}")
    public Result attrInfoList(@PathVariable("c1id") Long c1id,
                               @PathVariable("c2id")Long c2id,
                               @PathVariable("c3id")Long c3id){

        //数据从哪来？接到前端的数据
        //数据怎么处理？定义service功能，进行处理【处理逻辑甩给service】
        //数据给哪去？处理完成后，前端需要我们返回一个数据
        List<BaseAttrInfo> result = baseAttrInfoService
                .getAttrsAndValueByCategory(c1id,c2id,c3id);

        return Result.ok(result);
    }

}
